/*
 * Copyright (c) 2008 Openviewing
 *
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use,
 * copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following
 * conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 * OTHER DEALINGS IN THE SOFTWARE.
 *
 * Created: 03-Sep-2006 19:31:33
 */
package org.openviewing.foundation.control;

import org.openviewing.foundation.control.command.Command;
import org.openviewing.foundation.model.Model;

/** Application control Domain Command strategy.
 *
 *  This Class follows the 'Applicaion Controller' design pattern [FOWLER]. This outlines the 'Domain Command' strategy in the design pattern.
 *  <br />
 *  <br />References
 *  <br />[FOWLER]
 *  <br />Fowler, Martin. <i>Patterns Of Enterprise Application Architecture.</i> Addison-Wesley, 2003.
 *
 */
public interface DomainCommandStrategy extends Command
{
    /** The model accessor
     *
     *  Determines the model data that is to be used within the view.
     *  @return    The model data access object.
     */
    public Model getModel();
    /** The view accessor.
     *
     *  Determine the view to be rendered after the execution.
     *  @return The view identifer to be rendered.
     */
    public String getView(); /* TODO Change to return a view */
}

/*
 * $Log$
 * Revision 1.1  2007/03/05 21:12:05  mat
 * Initial development
 *
 */
